MongoDB 正则表达式
MongoDB 使用 $regex 操作符来设置匹配字符串的正则表达式。
MongoDB使用PCRE (Perl Compatible Regular Expression) 作为正则表达式语言。
不同于全文检索,我们使用正则表达式不需要做任何配置。
考虑以下 mongo 集合的文档结构,该文档包含了文章内容和标签:
|
|
使用正则表达式
使用正则表达式查找包含 mongodb 字符串的文章:
|
|
如果要使用不区分大小写的表达式,则需要用到options i:
|
|
在数组元素使用正则表达式:
|
|
优化正则表达式操作
如果你的文档中字段设置了索引,那么使用索引相比于正则表达式匹配查找所有的数据查询速度更快
如果正则表达式是前缀表达式,所有匹配的数据将以指定的前缀字符串为开始。例如: 如果正则表达式为 ^tut ,查询语句将查找以 tut 为开头的字符串
使用正则表达式要注意的地方
正则表达式中使用变量。一定要使用eval将组合的字符串进行转换,不能直接将字符串拼接后传入给表达式。否则没有报错信息,只是结果为空!实例如下:
|
|
模糊查询包含title关键词, 且不区分大小写:
|
|
MongDB GridFS
GridFS 用于存储和恢复那些超过16M(BSON文件限制)的文件(如:图片、音频、视频等)
GridFS 也是文件存储的一种方式,但是它是存储在MonoDB的集合中
GridFS 可以更好的存储大于16M的文件
GridFS 会将大文件对象分割成多个小的chunk(文件片段),一般为256k/个,每个chunk将作为MongoDB的一个文档(document)被存储在chunks集合中
GridFS 用两个集合来存储一个文件:fs.files与fs.chunks
每个文件的实际内容被存在chunks(二进制数据)中,和文件有关的meta数据(filename,content_type,还有用户自定义的属性)将会被存在files集合中
GridFS bash 命令
添加文件
1 mongofiles put xxx.txt
常用参数如下:
-d 指定数据库
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
-r 如果存在同名文件则在put成功后删除其他同名文件
下载文件
1 mongofiles get xxx.txt
常用参数如下:
-d 指定数据库
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
-l 下载到本地的文件名,默认和数据库中的名字一致
删除文件
1 mongofiles delete xxx.txt
删除指定名称的文件,如果存在同名文件则都删除
常用参数如下:
-d 指定数据库
-u –p 指定用户名,密码
-h 指定主机
-port 指定主机端口
查看文件
1、list
显示所有文件
|
|
显示所有的指定文件名的文件
2、search
搜索指定名称的文件,可以模糊搜索
|
|